package com.liangtian.mdm.system.permission.service.impl;

import com.liangtian.mdm.system.button.model.SysPermissionButton;
import com.liangtian.mdm.system.permission.dao.SysPermissionDao;
import com.liangtian.mdm.system.permission.model.SysPermission;
import com.liangtian.mdm.system.permission.service.SysPermissionService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * <p>Encoding    :  UTF-8</p>
 * <p>Package Name: com.liangtian.mdm.system.service.permission.impl </p>
 * <p>Project Name: chccig-dm </p>
 * <p>Copyright   :  Copyright(c) 2016 石化盈科信息技术有限责任公司 </p>
 * <p>Created Time: 2016-04-28 11:32</p>
 * <p>Description : 权限服务接口实现</p>
 *
 * @author : hj
 * @version :  1.0
 */
@Service
public class SysPermissionServceImpl implements SysPermissionService {

    //日志
    private static final Logger logger = LoggerFactory.getLogger(SysPermissionServceImpl.class);

    //注入系统权限持久层dao接口
    @Autowired
    SysPermissionDao permissionDao;

    /**
     * @param permission 对象
     * @return 受影响的行数
     * @desc 编辑 （编辑数据；启用-1；禁用-0）
     */
    @Override
    public int updatePermission(SysPermission permission) {
        return permissionDao.updatePermission(permission);
    }

    /**
     * @param params ids的结合信息
     * @return 受影响的行数
     * @desc 批量删除权限数据
     */
    @Override
    public int batchDeletePermission(Map<String, Object> params) {
        return permissionDao.batchDeletePermission(params);
    }

    /**
     * @param permission 分页数据的信息
     * @return 权限信息
     * @desc 获取全部的权限信息
     * @params参数详情 permissionName 权限名称
     * @params参数详情 permissionStatus 权限状态
     * @params参数详情 length 每页显示条数
     * @params参数详情 pageNum 页码
     * @params参数详情 start 起始条数
     * @params参数详情 draw 请求次数
     */
    @Override
    public PageInfo queryAllPermission(SysPermission permission) {
        Integer pageNum = permission.getPageNum();
        Integer length = permission.getLength();
        PageHelper.startPage(pageNum, length);
        //获取文档数据
        List<Map<String, Object>> list = permissionDao.queryAllPermission(permission);
        PageInfo pageInfo = new PageInfo(list);
        return pageInfo;
    }

    /**
     * @param pramas
     * @return 全部启用状态下的权限树
     * @desc 获取权限资源 权限新增时的权限树
     * @params参数详情 permissionStatus 权限状态 1
     */
    @Override
    public List<Map<String, Object>> queryPermissionMapListForTree(Map<String, Object> pramas) {
        return permissionDao.queryPermissionMapListForTree(pramas);
    }

    /**
     * @param params
     * @return 受影响的行数
     * @desc 编辑权限状态
     * @params参数详情 permissionId 权限编号
     */
    @Override
    public int editPermissionStatus(Map<String, Object> params) {
        return permissionDao.editPermissionStatus(params);
    }

    /**
     * @param params
     * @return 权限列表
     * @desc 根据当前角色获取角色拥有的权限
     * @params参数详情 roleId 角色编号
     */
    @Override
    public List<Map<String, Object>> queryPermissionByRoleId(Map<String, Object> params) {
        return permissionDao.queryPermissionByRoleId(params);
    }

    /**
     * @param params id map集合
     * @return 权限信息
     * @desc 通过权限id查询权限信息
     * @params参数详情 permissionId 权限编号
     */
    @Override
    public Map<String, Object> queryDocumentByPermission(Map<String, Object> params) {
        return permissionDao.queryDocumentByPermission(params);
    }

    /**
     * @param params id map集合
     * @return 权限信息
     * @desc 通过权限id查询权限信息
     * @params参数详情 permissionId 权限编号
     */
    @Override
    public int batchDeleteRolePermission(Map<String, Object> params) {
        return permissionDao.batchDeleteRolePermission(params);
    }

    /**
     * @param params
     * @return 资源信息列表
     * @desc 根据角色信息查询资源信息
     */
    @Override
    public List<Map<String, Object>> queryPermissionsMapByRoleIds(Map<String, Object> params) {
        return permissionDao.queryPermissionsMapByRoleIds(params);
    }

    /**
     * @return 受影响的行数
     * @desc 新增权限状态
     */
    @Override
    public int insertSysPermission(SysPermission sysPermission) {
        return permissionDao.insertSysPermission(sysPermission);
    }

    /**
     * @return 受影响的行数
     * @desc 根据资源父ID查询角色是否关联
     */
    @Override
    public int queryRolePermissionId(SysPermission sysPermission) {
        return permissionDao.queryRolePermissionId(sysPermission);
    }

    @Override
    public List<Map<String, Object>> queryPermissionsMapByUserId(
            Map<String, Object> params) {
        return permissionDao.queryPermissionsMapByUserId(params);
    }

    @Override
    public List<Map<String, Object>> queryPermissionsMapByUserIdAndUGroupId(String userId) {
        return permissionDao.queryPermissionsMapByUserIdAndUGroupId(userId);
    }

    @Override
    public List<SysPermission> queryPermissionsByUserAccount(String userAccount) {
        return permissionDao.queryPermissionsByUserAccount(userAccount);
    }

    @Override
    public List<SysPermissionButton> queryButtonPermissionsByUserAccount(String userAccount) {
        return permissionDao.queryButtonPermissionsByUserAccount(userAccount);
    }
}

